<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
    <title>靓的仔的Java博客</title>
    <link rel="stylesheet" href="css/index.css">
</head>


<body>
    <header class="header">
        <div class="photo">
            <a href="/MyBlog/index.html">
                <img src="images/photo.jpg">
                <span>靓</span><span>的</span><span>仔</span>
            </a>
        </div>
        <div class="count" id="count"></div>
    </header>
    <section class="section">
        <h1 class="urge">希望你并不是为了努力而努力</h1>
        <div class="photo_info">
            <img src="images/photo.jpg">
            <p>靓的仔</p>
            <span>"我不会是<br>最勇的吧"</span>
        </div>
    </section>
    <div class="boke">
        <div class="blog">
            <!--blog6-->
            <a href="blog_6/index.html">
                <h1 class="title">数组</h1>
                <p>
                    一、什么是数组
                    普通的一个变量只能存储一个数据，那要同时存储多个数据就可以使用数组，Java中数组可以同时存储至多2^31-1个同类型的数据（int类型的最大值）
                    二、数组的定义
                    1.Java中数组的定义有两种方法：
                    1.数据类型 数组名[];
                    2.数据类型[] 数组名;
                    2.只定义不开辟空间不行，还要为数组开辟空间：
                    数组名 = new 数据类型[数组长度];
                    3.数组初始化
                    数组名[下标] = 字面值;
                    4.数组的定义可以直接一步完成：
                    数据类型 数组名[] = {值1,值2,值3,...};
                    注意：使用这种方法初始化中括号中不能写数组长度
                    三、数组的引用
                    数组名[下标];
                    注意：下标从0开始最大下标为数组长度-1
                    四、数组的遍历
                    1.数组的遍历可以使用for循环页可以使用foreach循环
                    2.foreach循环语法：
                    for(被遍历的数组的数据类型 为它取一个名字 : 被遍历的数组的数组名){
                    遍历语句;
                    }
                    五、二维数组和多维数组
                    1.二维数组的定义：
                    数据类型 数组名[][];
                    2.多维数组的定义：
                    与二维数组类似，要定义多少维数组就加几个中括号;
                    3.多维数组的引用和遍历都和一维数组是类似的
                </p>
                <div class="date">发布于2021‎年09‎月‎30‎日 ‏‎22:03:23</div>
            </a>
        </div>
        <div class="blog">
            <!--blog5-->
            <a href="blog_5/index.html">
                <h1 class="title">流程控制语句</h1>
                <p>
                    Java中的流程控制语句可以分为三大类。
                    一、选择结构
                    1.if语句
                    1.语法：
                    if(布尔表达式){
                    Java语句;
                    } else if(布尔表达式){
                    Java语句;
                    } else {
                    Java语句;
                    }
                    2.在Java的if语句中，只要有一个if语句执行，整个if语句结束
                    3.如果if语句带有else if分支，如果上一个布尔表达式的结果为false，那么else if的布尔表达式会进行运算
                    4.如果if语句带有else分支，那么这个if语句必然有一个分支执行
                    5.其他：所有控制语句都可以嵌套使用；如果分支之后只有一条Java语句那么大括号可以选择省略
                    2.switch语句
                    1.语法：
                    switch(int或者String类型的字面值或者变量){
                    case int或者String类型的字面值或者变量:
                    Java语句;
                    break;
                    case int或者String类型的字面值或者变量:
                    Java语句;
                    break;
                    case int或者String类型的字面值或者变量:
                    Java语句;
                    break;
                    default:
                    Java语句;
                    }
                    2.过程：switch小括号内的值会和case后面的值一一匹配，匹配成功会一次往下走执行
                    3.如果匹配成功的分支之后有"break;"语句，那么整个switch语句执行结束，如果没有"break;"那么下一个分支会直接执行，不再进行匹配（case穿透）
                    4.如果所有的case语句都没有匹配成功，那么default分支会被执行
                    5.case之后只能跟int或者String类型的字面值或者变量（当然如果是byte、short、long会进行自动类型转换）(JDK7之后)
                    6.case语句可以合并（也就是空语句+case穿透）
                    二、循环结构
                    1.for循环
                    1.语法：
                    for(初始化表达式;布尔表达式;更新表达式){
                    循环体;
                    }
                    2.初始化表达式、布尔表达式、更新表达式都不是必须的（但是两个分号必须）
                    3.初始化表达式最先执行，并且只执行一次
                    4.布尔表达式处只能是false/true
                    5.执行过程：先执行一次初始化表达式，再判断布尔表达式，true就执行循环体之后再执行更新表达式，再判断布尔表达式再循环。false就结束循环
                    6.初始化表达式中定义的变量，作用域只在for循环内
                    2.while循环
                    1.语法
                    while(布尔表达式){
                    循环体;
                    }
                    2.过程：执行到while循环时，会先判断布尔表达式的值，如果为false那么循环直接结束，如过为true直接执行循环体，然后再执行第一步
                    3.while循环可能执行0~N次：有可能只执行一次，有可能无限循环
                    3.do...while循环
                    1.语法：
                    do{
                    循环体;
                    }while(布尔表达式)
                    2.执行过程：首先直接执行循环体，然后再判断布尔表达式，如果为true就继续执行判断，如果为false循环结束
                    3.do...while语句至少执行一次
                    4.do...while循环之后有一个分号";"
                    三、循环控制语句
                    1.break;
                    1.break是Java中的关键字，被翻译为"中断/折断"，"break"+";"就是一个单独的Java语句
                    2.break;语句可以放在for，while，do...while循环中用来结束循环。在循环中执行到break;，循环会直接结束
                    3.break存在的意义是节约内存资源，如果一个循环已经达到目的，那么再执行也没有意义了
                    4.默认情况下，break;结束的是离它最近的循环。也可以给循环取名，指定结束某一个循环。
                    name:for(初始化表达式;布尔表达式;更新表达式){
                    循环体;
                    }
                    break name;
                    2.continue
                    1.continu本意表示"继续"，在Java中表示结束这一次循环，直接进行下一次循环
                    2.continue也是Java中的一个关键字，加";"构成Java语句
                    3.continue也有这种语法：continue name;指定结束某一个循环
                </p>
                <div class="date">发布于2021‎年‎09‎月‎14‎日 ‏‎13:25:48</div>
            </a>
        </div>
        <div class="blog">
            <!--blog4-->
            <a href="blog_4/index.html">
                <h1 class="title">Java的运算符</h1>
                <p>
                    一、算术运算符
                    	+：加法运算符
                    	-：减法运算符
                    	*：乘法运算符
                    	/：商数运算符
                    	%：余数运算符
                    	++：自加运算符
                    	--：自减运算符
                    	1.加法运算符如果左右两边两个算子都是数字，"+"会求和，但是只要有其中一个算子为字符串，"+"就会把两个算子当作字符串拼接在一起
                    	2."/"计算的是两个算子的商数，如果是两个整数型做"/"，那么只会得出整除的商数，如果至少有一侧算子为浮点数，那么会计算较为准确的商
                    	3."%"计算的是两个算子的余数，如果是两个整数型做"%"，那么只会得出整除之后的余数
                    	4."++"是单目运算符，如果操作数在前，会先计算再带入值，如果操作数在后，会先带入值，但是无论如何被操作数都会自加一，"--"同理
                    	5.当一个表达式中有多个运算符时，编译器会按照运算符的优先级计算，不确定优先级时就加一队括号表示优先计算"()"
                    二、关系运算符
                    	&gt;：大于
                    	&gt;=：大于等于
                    	&lt;：小于
                    	&lt;=：小于等于
                    	==：等于
                    	!=：不等于
                    	1.关系运算符一定有两个算子，并且输出的值一定是布尔型的true/false
                    	2.特别注意"="是赋值运算符，"=="才是判断是否相等
                    三、逻辑运算符
                    	&：逻辑与运算符
                    	|：逻辑或运算符
                    	!：逻辑非运算符
                    	^：逻辑异或运算符
                    	&&：短路与运算符
                    	||：短路或运算符
                    	1.逻辑与和短路与：两边算子都为true时，表达式结果为true（并且），只要其中有一个算子为false，表达式结果为false
                    	2.逻辑或和短路或：两边算子只要有一个为true，结果就为true（或者），两个算子都为false，表达式结果为false
                    	3."!"时一个单目运算符，当算子为true时表达式结果为false，当算子为false时表达式结果为true（取反）
                    	4."^"表示两端算子不一致时，表达式为true，两端算子都为true或者false，表达式结果为false
                    	5.逻辑和短路的区别：当使用逻辑表达式时，如果第一个算子已经可以得到表达式结果时，第二个算子仍然会计算；
                    当使用段落表达式时，如果第一个算子已经可以得到整个表达式的结果时，第二个算子就不会执行；比如：int i = 0;(i != 0) & ((i++) == 1);执行之后i的结果为1，
                    而int i = 0;(i != 0) && ((i++) == 1);执行之后i的结果为0，因为在此例中使用逻辑与时，第一个算子以进可以判断结果为false，第二个算子没有再计算
                    四、位运算符
                    	&：按位与（AND）
                    	|：按位或（OR）
                    	^：按位异或
                    	~：按位非（NOT）
                    	&gt;&gt;：右移
                    	&lt;&lt;：左移
                    	&gt;&gt;&gt;：右移
                    	1.按位与、逻辑与和按位或、逻辑或两队符号分别都是一样的，这是因为false和true的本质是在内存中存储的位分别为0和1
                    	2.位运算符操作符操作的是二进制位即比特位，只有两个算子都是数字时才是位运算符操作，如果是布尔类型就会变成逻辑运算符操作，在Java中数字不能和布尔类型操作
                    	3."~"也是单目运算符，会将算子的所有二进制位取反
                    	4."&gt;&gt;"，"&lt;&lt;"，"&gt;&gt;&gt;"都是移位操作符(var &gt;&gt; bit)，"10 &gt;&gt; 3"表示把10的二进制位向右移动3个比特位，"&lt;"同理。
                    "&gt;&gt;"，"&gt;&gt;&gt;"的区别是："&gt;&gt;"移位时左边空出来的位按照最高位的符号位补，正数补0负数补1，而"&gt;&gt;&gt;"只会补0
                    五、赋值类运算符
                    	=：普通赋值运算符
                    	+=：加等运算符
                    	-=：减等运算符
                    	*=：乘等运算符
                    	/=：商等运算符
                    	%=：模等运算符
                    	1.赋值类运算符会先计算运算符右边的值再赋给左边
                    	2.各种等的赋值运算符和普通赋值运算符的区别为：前者不会改变数据类型，但是会损失精度
                    六、字符串连接运算符
                    	1."+"两个算子都是数字的话就并不是进行的字符串连接运算，要至少有一个算子是字符串才是做字符串连接运算
                    	2.运算之后的结果永远是字符串类型(String)
                    	3.当一个表达式出现多个"+"，如果有括号就先计算括号，然后从左往右依次计算
                    七、三元运算符
                    	1.语法规则：布尔表达式?表达式1?表达式2;
                    	2.当布尔表达式为true时，整个运算符的结果为表达式1；当布尔表达式为false时，整个运算符的结果为表达式2；
                </p>
                <div class="date">发布于2021年09‎月‎12‎日 ‏‎16:03:45</div>
            </a>
        </div>
        <div class="blog">
            <!--blog3-->
            <a href="blog_3/index.html">
                <h1 class="title">Java中的数据类型</h1>
                <p>Java中数据类型包括四大类八小种。
                    一、Java的数据类型分类
                    1.整数形：byte、short、int、long
                    2.浮点型：float、double
                    3.字符型：char
                    4.布尔型：boolean
                    二、数据类型的大小
                    1.byte占1字节、short占2字节、int占4字节、long占8字节
                    2.float占4字节、double占8字节
                    3.char占2字节
                    4.boolean占1字节
                    三、数据类型的默认值
                    1.整数型的默认值是0
                    2.浮点型默认值为0.0
                    3.char默认值为'\u0000'
                    4.boolean默认值为false
                    四、数据类型的取值范围
                    byte：-128~127（-2^7~2^7-1）
                    short：-32768~32767（-2^15~2^15-1）
                    int：-2147483648～2147483647(-2^31~2^31-1)
                    long：-9223372036854775808～9223372036854775807（-2^63~2^63）
                    float：3.402823e+38～1.401298e-45
                    double：1.797693e+308～4.9000000e-324
                    五、数据之间的类型转换
                    1.除了boolean类型之外，其他类型都可以相互转换数据类型
                    2.小容量可以自动转换大容量，多的字节会被阶段
                    3.大容量想小容量转换时，需要加强制转换符
                    4.byte，short，char互相转换时，先各自抓换为int类型
                    5.当字面值没有超过byte，short，int时，可以直接赋值
                    6.多种类型混合转换时，先转换成最大的那种类型
                </p>
                <div class="date">发布于2021年09月07日 12:42:03</div>
            </a>
        </div>
        <div class="blog">
            <!--blog2-->
            <a href="blog_2/index.html">
                <h1 class="title">Java的编译过程概述</h1>
                <p>Java的编译过程对于程序开发来说，并没有多大作用，但是，在搞清楚底层原理之后，肯定可以帮助到开发。
                    Java代码要运行起来包括两个非常重要的阶段：
                    一、编译阶段
                    编译阶段的主要任务是判断Java代码能不能符合Java的格式。包括以下两个个过程：
                    1.敲好代码（废话）
                    2.使用javac.exe对程序进行编译
                    3.javac命令会将代码进行预处理，包括宏替换，调整格式，删除注释等等之后生成.class文件
                    当一段Java代码被写好之后，就要使用JDK(Java Development kit)中的javac命令来帮助生成.class文件。
                    javac对源代码处理之后生成.class文件，.class文件并不是纯粹的二进制代码。
                    二、运行阶段
                    运行阶段就比较复杂了。包括过程：
                    1.对.class文件使用java命令
                    2.java命令会调用JVM(Java Visual Machine)Java虚拟机
                    3.JVM会调用ClassLoader(类加载器)
                    4.ClassLoader通过classpath找到.class文件
                    5.ClassLoader将找到的.class文件装载到JVM
                    6.JVM对.class文件运行
                    当得到一个.class文件之后，因为这个文件通过了javac命令的编译，那么这个文件是肯定可以运行。
                    这时再对.class文件使用java命令，java命令就会调用JVM，JVM又会马上调用ClassLoader，ClassLoader会去找.class文件。
                    怎么找？这时就需要一个环境变量classpath，ClassLoader会从这个环境变量中去寻找.class文件，如果没有配置该环境变量，ClassLoader就会默认在当前目录下寻找.class文件。
                    .class文件被找到之后，ClassLoader会马上把这个.class文件装载到JVM，JVM就会处理这个文件执行得到结果(正因为有了JVM的中间媒介作用，Java代码才有如此好的移植性)。
                </p>
                <div class="date">发布于2021年09月06日 13:44:37</div>
            </a>
        </div>
        <div class="blog">
            <!--blog1-->
            <a href="blog_1/index.html">
                <h1 class="title">今天我开始写Java博客了~</h1>
                <p>今天我开始写Java的博客了，刚好今天2021.9.1也是学校开学，我也会在学校的课程中学习Java，我在Java上遇到的问题都会写在这里
                    （这篇博客并不是博客，也并不是2021.9.1写的，只是为了提前写好可以在2021.9.1上传Gitee托管）</p>
                <div class="date">发布于2021年09月01日 00:00:01</div>
            </a>
        </div>
    </div>
    </div>
</body>
<script src="js/index.js"></script>

</html>